package com.zhj.edu.encoder;

import com.zhj.edu.utils.MD5;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Component;

/**
 * 这个是密码的散列器
 */
@Component //这个对象是单例的，可以放入IOC容器中
public class MyPasswordEncoder implements PasswordEncoder {
    /**
     * 用于散列密码
     * @param rawPassword
     * @return
     */
    @Override
    public String encode(CharSequence rawPassword) {
        return MD5.encrypt(rawPassword.toString().trim());
    }

    /**
     * 用于比较密码是否一致
     * @param rawPassword:页面传递过来的密码
     * @param encodedPassword:数据库查询出来的密码
     * @return
     */
    @Override
    public boolean matches(CharSequence rawPassword, String encodedPassword) {
        //先将页面出递过来的密码进行散列，再将其与数据库查询出来的密码进行比较
        return encode(rawPassword.toString().trim()).equals(encodedPassword);
    }
}
